Agentic RL
前面几篇讲的都是怎么用一个训练好的模型。这一篇讲模型是怎么被训成智能体的——把 LLM 当成一个可学习的策略,放进顺序决策循环里去优化。
它和 提示工程、Agent Loop 的分界很清楚:那两层是在推理期想办法,这一层是在训练期改参数。
先看 LLM 训练的完整流程
一个模型的诞生分两大阶段:预训练(Pretraining) 和 后训练(Post-training)。
预训练:学语言规律和世界知识
用数 TB 级文本做自监督学习,最常见的任务是因果语言建模(下一个词预测):
最小化负对数似然,就是最大化预测正确词的概率。学会的东西分四层:语法规则(什么样的词序合法)、语义知识(词与词的关系)、世界知识(事实性信息)、基础推理能力。
特点:数据量巨大、计算成本极高、训练信号完全从文本本身自动构造。
后训练:把「预测下一个词」变成「对话助手」
预训练完的模型只是个「预测下一个词」的模型——它不知道如何遵循指令、生成有帮助无害诚实的回答、拒绝不当请求。后训练分三步:
| 步骤 | 目标 | 数据 | 损失函数 |
|---|---|---|---|
| SFT(监督微调) | 学会遵循指令和对话格式 | (prompt, completion) 对 | |
| RM(奖励建模) | 学会人类偏好 | 偏好对比数据(chosen / rejected) | |
| RL 微调 | 用奖励模型优化生成质量 | —— |
奖励模型的损失函数值得看一眼:它不预测绝对分数,只要求给更好的回答打更高的分——用的是两个分数之差过 sigmoid。这是「成对比较比绝对打分更可靠」在训练侧的体现(同一结论在 LLM Evaluation 里作为评测原则出现过)。
RL 阶段的目标函数里那个 KL 项是核心约束:
为什么必须有这个约束:奖励模型只是人类偏好的近似,没有任何约束地最大化它的分数,模型会找到「奖励模型打高分但人并不满意」的区域——这就是奖励欺骗(reward hacking)。
RLHF 与 RLAIF
| 偏好数据来自 | 成本 | |
|---|---|---|
| RLHF | 人工标注 | 高昂 |
| RLAIF | 一个能力足够强的 LLM(如 GPT-4)评分排序 | 大幅降低,效果接近甚至超过 RLHF |
RLAIF 的流程:SFT 模型生成多个候选 → 用强模型评分排序 → 用 AI 的评分训奖励模型 → 用奖励模型做强化学习。
PBRFT 与 Agentic RL 的分界
传统后训练可以叫 PBRFT(Preference-Based Reinforcement Fine-Tuning),它只关注单轮对话的质量——给定一个问题、生成一个回答、按回答质量给分。
这对多步推理、工具使用、长期规划力不从心。差别用 MDP 五元组逐项对照最清楚:
| MDP 组件 | PBRFT | Agentic RL |
|---|---|---|
| 状态 | ||
| 行动 | 只有文本生成, | |
| 转移 | 无状态转移 | |
| 奖励 | 只有单步奖励 | |
| 目标 |
行动空间那一行最值得记:它正是 ReAct 那篇里那个
一个具体例子
任务:「分析这个 GitHub 仓库的代码质量」。
| 步骤 | 行动 | 奖励 |
|---|---|---|
| 1 | 调用 GitHub API 获取仓库信息 | +0.1 |
| 2 | 读取主要代码文件 | +0.1 |
| 3 | 分析代码质量 | +0.2 |
| 4 | 生成分析报告 | +0.6 |
| —— | 累积 | 1.0 |
对比 PBRFT:同样是这个请求,模型一次性生成完整回答,按回答质量打一个分。中间过程没有任何信号——做没做那四步、顺序对不对,奖励函数看不见。
PBRFT 是单步,Agentic RL 是完整轨迹:
PBRFT:T = 1
prompt ──▶ 模型生成一个回答 ──▶ 打分 r(s₀, y)
(中间过程没有任何信号)
Agentic RL:T ≫ 1
s₀ a₀ s₁ a₁ s₂ a₂ s₃
prompt ──▶ 调 API ──▶ 含结果 ──▶ 读文件 ──▶ 含内容 ──▶ 写报告 ──▶ 完成
│ │ │ │
└── r₀ ─────┘ r₁ ───────────────┘ r₂ ───────────────┘
+0.1 +0.1 +0.2 +0.6
累积奖励 = Σ γᵗ r(sₜ, aₜ) = 1.0
⇒ 行动空间里有两类行动:文本(思考)与工具调用
—— 这正是 ReAct 那个 A ∪ L 的强化学习版本
⇒ 状态随行动演化:调完搜索工具后,状态里就包含搜索结果思维方式的转变
| PBRFT 思维 | Agentic RL 思维 | |
|---|---|---|
| 关注 | 让模型生成更好的单个回答 | 让智能体完成复杂任务 |
| 优化目标 | 回答质量 | 任务完成度 |
| 对象 | 语言表达 | 行动策略 |
| 决策 | 单步 | 多步规划 |
「愿意执行看似绕路的中间步骤」是这套训练最反直觉的产物——纯 SFT 学不到这个,因为训练数据里没有「先绕路再成功」的示范;它只能从累积奖励的反馈里学出来。
Agentic RL 想赋予的六种能力
| 能力 | 为什么提示/Prompt 或 SFT 不够 |
|---|---|
| 推理 | CoT 提示依赖少样本示例、泛化有限;SFT 只能模仿训练数据里的推理模式。RL 靠试错发现训练数据中没有的推理路径,并学会何时该深想、何时该快答 |
| 工具使用 | 学会何时需要工具、选哪个、怎么组合多个工具 |
| 记忆 | 静态检索(如 RAG)无法针对任务优化;RL 让智能体学会记忆管理策略——哪些值得记、何时更新、何时删过时信息 |
| 规划 | CoT 是线性思考无法回溯,提示模板难以适应新情况;RL 学动态规划并权衡短期与长期收益 |
| 自我改进 | 回顾自身输出、纠正错误、优化策略——识别错误、分析失败原因、调整策略 |
| 感知 | 多模态理解、使用视觉工具、视觉规划 |
「SFT 只能模仿训练数据里的推理模式」这句是关键:SFT 的目标函数是最大化
一个具体的训练目标对比(推理任务):
- 奖励:
if else (只判对错,不管推理链长什么样) - 目标:
注意奖励里没有
奖励函数设计
奖励函数是强化学习的核心,它定义了什么是「好的行为」。
设计准则(好的一面 / 坏的一面):
| 好的奖励函数 | 糟糕的奖励函数 |
|---|---|
| 清楚地定义什么是成功 | 只在任务结束时给奖励,中间步骤无反馈 |
| 提供梯度信号 | 存在奖励欺骗——智能体找到「作弊」方式拿高分 |
| 不会产生过大方差 | 多个目标相互矛盾 |
| 容易调整和组合 | 方差过大,训练不收敛 |
「存在奖励欺骗」是最需要盯的一条——它和上面的 KL 约束是同一个问题的两种表现:奖励是代理指标,只要能被优化,就会被「优化到偏离本意」。
三种内置奖励函数
(1)准确率奖励——最基础,只关心答案对不对:
实现上的细节比公式多。首先要提取最终答案:查找 Final Answer: 后的数字、#### 标记后的数字,或用正则取最后一个数字。然后比较时要处理等价性:
- 数值精度:
72.0和72应视为相同 - 单位转换:
1000和1k - 格式差异:
72和seventy-two
**这三条是奖励函数里最容易出错的地方。** 一个把 `72.0` 判成错的比较逻辑,会让模型在学习「答案要写成整数」而不是「把题算对」——**它训出的是格式遵从,不是推理能力**。
局限:奖励稀疏——只有完全正确才有奖励,无法区分「接近正确」和「完全错误」,训练初期缺乏有效反馈。
(2)长度惩罚——鼓励简洁:
关键设计:只在答案正确时才施加惩罚。 否则模型会为了减少惩罚而生成错误的短答案——这是「多目标相互矛盾」的一个具体防护。
算例:目标 200 字符、实际 500 字符、
(3)步骤奖励——鼓励清晰推理:
三种的取舍:准确率奖励稀疏但无误导;长度惩罚和步骤奖励提供了更密的信号,但都引入了「什么算好」的额外假设——而任何额外假设都可能被优化到偏离本意。
SFT 与 LoRA
SFT 的目标函数与预训练同形(仍是最大化正确输出的概率),但数据不同:
| 预训练 | SFT | |
|---|---|---|
| 数据量 | 数 TB | 小得多 |
| 标注 | 不需要(自监督) | 需要人工构造 (prompt, completion) |
| 学到什么 | 通用语言能力 | 任务格式与基本能力 |
| 见效速度 | 慢、贵 | 快 |
LoRA(Low-Rank Adaptation) 是参数高效微调方案:原模型权重不动,在权重矩阵旁挂一对低秩矩阵,只训练这一小部分。这样显存需求大幅下降,让单卡微调大模型成为可能。
PPO → GRPO
PPO 是最经典的 RL 算法,通过裁剪限制策略更新幅度来保证稳定:
其中优势函数需要 Value Model 来估计:
PPO 在 LLM 训练里的三个问题
| 问题 | 说明 |
|---|---|
| 需要 Value Model | 增加训练复杂度与显存占用 |
| 要同时维护四个模型 | Policy / Reference / Value / Reward —— 工程实现复杂 |
| 训练不稳定 | 容易出现奖励崩塌或策略退化 |
GRPO 的做法:用组内均值代替价值模型
核心替换:用
这一个替换同时解决三件事:不需要 Value Model;组内相对化减少了奖励方差;流程简化为只需 Policy Model 和 Reference Model。
为什么「减组内均值」能当优势用:同一道题采样一组回答,组内均值就是「这道题的平均发挥水平」。一个回答比组内平均好多少,就是它的相对优势——这和对同一状态做多次采样、用经验均值代替
代价:它要求同一输入必须采样一组(group),所以采样成本比 PPO 高;而且推理任务的奖励设计要能比较组内相对好坏——纯二值奖励下,如果一组全对或全错,相对奖励全为 0,没有梯度。
PPO 与 GRPO 在「需要哪些模型」上的差别:
PPO:优势函数要单独训一个价值网络
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Policy │ │Reference │ │ Value │ │ Reward │ 四个模型同时维护
└──────────┘ └──────────┘ └────┬─────┘ └──────────┘
│
A(s, a) = r(s, a) + γV(s′) − V(s) ← 要估 V,就得先训它
GRPO:用「组内相对奖励」代替优势
┌──────────┐ ┌──────────┐
│ Policy │ │Reference │ 只维护两个模型
└──────────┘ └──────────┘
│
同一道题采样一组回答 ──▶ 组内均值 r̄_group
│
A ≈ r(s, a) − r̄_group ← 组内均值就是「这道题的平均发挥水平」
⇒ 一个替换同时解决三件事:不需要 Value Model、组内相对化降低奖励方差、
流程简化为两个模型
⇒ 代价:同一输入必须采样一组(采样成本更高);一组全对或全错时
相对奖励全为 0,没有梯度评估与错误分析
训练之后要能说清「学到了什么、还差在哪」。三个层次:
| 层次 | 看什么 |
|---|---|
| 评估指标 | 准确率这类任务指标,配合训练曲线(奖励、KL、长度) |
| 错误分析 | 把失败样本分型——是推理错、格式错、还是答案提取失败 |
| 改进方向 | 按错误分布决定:补数据、调奖励权重、还是加训练步数 |
「答案提取失败」这一类要单独分出来——它属于评估实现问题(前面那三条等价性处理),不属于模型能力问题。把它混进「答错」里,会误判模型能力,然后去加训练量解决一个根本不存在的问题。
相关
- ReAct —— 行动空间
在提示层的版本,这一篇是它被训练出来的版本 - Agent Loop —— 训练出来的是这个循环里的策略
- 06-缩放法则 —— 训练期的另一条轴(这一篇讲的是「怎么训」,那篇讲「训多大」)
- LLM Evaluation 与反馈闭环 —— 评测侧的对应方法
- Prompt Engineering —— CoT 与 Self-Consistency 是提示层对同一批能力的替代方案
参考
- 《Hello-Agents》第十一章
- Schulman, J., et al. Proximal Policy Optimization Algorithms. arXiv:1707.06347, 2017.
- DeepSeekMath 提出的 Group Relative Policy Optimization
- Christiano, P., et al. Deep Reinforcement Learning from Human Preferences. NeurIPS 2017.
- Hu, E., et al. LoRA: Low-Rank Adaptation of Large Language Models. ICLR 2022.
YJ